package com.ljy.my_study.lintcode.水仙花数;

import java.util.ArrayList;
import java.util.List;

/** 
* @author James
* @date 2019年1月26日 
*/
public class TestMain {
//	水仙花数
//	水仙花数的定义是，这个数等于他每一位上数的幂次之和 见维基百科的定义
//
//	比如一个3位的十进制整数153就是一个水仙花数。因为 153 = 13 + 53 + 33。
//
//	而一个4位的十进制数1634也是一个水仙花数，因为 1634 = 14 + 64 + 34 + 44。
//
//	给出n，找到所有的n位十进制水仙花数。
//
//	样例
//	比如 n = 1, 所有水仙花数为：[0,1,2,3,4,5,6,7,8,9]。
//	而对于 n = 2, 则没有2位的水仙花数，返回 []。
//
//	注意事项
//	你可以认为n小于8。
	public static List<Integer> getNarcissisticNumbers(int n) {
        // write your code here
        int min=(int)Math.pow(10,n-1);
        int max=(int)Math.pow(10,n);
        List<Integer> list=new ArrayList<>();
        for(int i=min;i<max;i++){
            int num=i;
            int sum=0;
            for(int j=0;j<n;j++){
                int a=num%10;
                sum+=(int)Math.pow(a,n);
                num=num/10;                
            }
            if(i==sum){
                list.add(sum);
            }
        }
        return list;
    }
	
	public static void main(String[] args) {
		System.out.println(getNarcissisticNumbers(1));
	}
}
